問題一、字串indexOf用法?
(一)概念一、indexOf 搜尋字串-特定索引值
除了陣列可以用indexOf之外,字串也可以
let s = "Hello, world";
s.indexOf("l"); //2 若indexOf接一個字串,表示第一個"l"出現的位置
以陣列來看,也是同樣用法
const a = ['ant', 'bison', 'camel', 'duck', 'bison'];
a.indexOf("bison"); //1
(二)概念二、indexOf 搜尋字串-範圍
let s = "Hello, world";
s.indexOf("l",3); //3 包含索引值為3或以後"l"的位置
const a = ['ant', 'bison', 'camel', 'duck', 'bison'];
a.indexOf("bison", 3); //4 包含索引值為4或以後"bison"的位置
(三)概念三、如果該陣列或字串沒有要搜尋的字,結果為-1
let s = "Hello, world";
s.indexOf("y"); //-1
const a = ['ant', 'bison', 'camel', 'duck', 'bison'];
a.indexOf("apple"); //-1
(四)概念四、lastindexOf 搜尋最後一個字串的索引值
lastindexOf("l"); //10 最後一個字母l的位置
在陣列中lastindexOf 是沒有這種用法的喔!
問題二、用 Boolean 搜尋字串的方式?
let s = "Hello, world";
s.includes("H"); //true
const pets = ['cat', 'dog', 'bat'];
pets.includes("cat"); //true
pets.includes("at"); //false 陣列內單字不能拆分尋找
includes() 方法中,值為0的所有元素都被視為相等,不考慮符號。也就是说,-0 等于 0,但 false 不被視為等于於0。
let a = [0, 1, 2, 3];
a.includes(-0); //true 表示在includes中,0和 -0是一樣的。
NaN 也可以被includes 尋找到
[1, 2, NaN].includes(NaN); //true
如果以範圍來搜尋「陣列」內的值,若完全沒有這個值,結果會是Boolean(false)
[1, 2, 3, NaN].includes(4, 100); //包含索引值100以及100之後,有沒有4這個數字?
//false 因為已經超出陣列範圍
呈上題,字串也可以這樣用喔!
let s = "Hello, world";
s.includes("e", 100); //false
Reference
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf